package com.jt.controller;

import com.jt.pojo.User;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
//历史：后端进行页面跳转时一般使用@Controller注解
//当下：前后端分离，页面不归后端管理，@RestController
//      @RestController = @Controller + @ResponseBody

//面试题：@Controller 和  @ResponseBody

//@Controller
//@ResponseBody
@RestController
//注解的规则：如果注解中只有一个属性，并且名称为value时，则属性名称可以省略不写
//如果有多个则不能省略
@PropertySource(value = "classpath:/user.properties",encoding = "utf-8")
public class HelloController {
    /**
     * 表达式：spring表达式 简称spel表达式
     * 语法：${表达式内容}
     * 工作原理：
     *        容器：再内存中一个存储大量数据的Map集合
     *        1.当SpringBoot程序启动时，首先加载application.yml的配置文件
     *        2. 当程序加载key-value结构时，将数据保存到Map集合中(容器内部)
     *        3. 利用Spel表达式，通过key，获取value，之后为属性赋值
     */
    @Value("${userinfo.name}")
    private String name;
    @Value("${user.info2}")
    private String name2;

    @Value("${userinfo.age}")
    private Integer age;

    @RequestMapping("/hello")
    public String hello(){
        return "欢迎使用SpringBoot"+name+age+name2;
    }
    @RequestMapping("/getuser")
    public User getUser(){
        User user = new User();
        user.setId(100).
        setName("张三").
        setAge(18).
        setSex("女");
        return user;
    }
}
